package com.financial.business.yspay.service.impl;

import com.financial.business.yspay.dto.YsReportDTO;
import com.financial.business.yspay.utils.JsonUtils;
import com.financial.business.yspay.utils.ValidateUtils;
import com.financial.business.yspay.utils.apiresult.ApiResult;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

import com.financial.business.yspay.dao.FinancialReportYsDao;
import com.financial.business.yspay.domain.FinancialReportYsDO;
import com.financial.business.yspay.service.FinancialReportYsService;


@Service
public class FinancialReportYsServiceImpl implements FinancialReportYsService {

    protected static final Logger logger = LoggerFactory.getLogger(FinancialReportYsServiceImpl.class);
    @Autowired
    private FinancialReportYsDao financialReportYsDao;

    @Override
    public FinancialReportYsDO get(Integer id) {
        return financialReportYsDao.get(id);
    }

    @Override
    public List<FinancialReportYsDO> list(Map<String, Object> map) {
        return financialReportYsDao.list(map);
    }

    @Override
    public int count(Map<String, Object> map) {
        return financialReportYsDao.count(map);
    }

    @Override
    public int save(FinancialReportYsDO financialReportYs) {
        return financialReportYsDao.save(financialReportYs);
    }

    @Override
    public int update(FinancialReportYsDO financialReportYs) {
        return financialReportYsDao.update(financialReportYs);
    }

    /**
     * 银盛报备
     *
     * @param requestParam
     * @return
     */
    @Override
    public ApiResult ysReport(String requestParam) {
        logger.info("FinancialReportYsServiceImpl.ysReport()------监听到平台报备json为：" + requestParam);
        YsReportDTO ysReportDTO = (YsReportDTO) JsonUtils.convertBean(requestParam, YsReportDTO.class);
        Map<String, Object> mapParams = JsonUtils.jsonToMap(requestParam);
        /*金融系统标配字段*/
        Object tempParams = mapParams.get("notify_url");
        /*回执地址*/
        String notifyUrl = tempParams == null ? null : tempParams.toString();
        /*对接平台编码*/
        tempParams = mapParams.get("platform_no");
        String platformNo = tempParams == null ? null : tempParams.toString();
        /*对接平台商户号*/
        tempParams = mapParams.get("store_no");
        String storeNo = tempParams == null ? null : tempParams.toString();
        /*第三方注册商户号*/
        tempParams = mapParams.get("third_store");
        String thirdStore = tempParams == null ? null : tempParams.toString();

        /*银盛报备字段校验*/
        /*平台商用户号*/
        tempParams = mapParams.get("mer_outside_custid");
        String merOutsideCustid = tempParams == null ? null : tempParams.toString();
        /*文件组*/
        tempParams = mapParams.get("fileMap");
        String fileMap = tempParams == null ? null : tempParams.toString();
        /*注册商户全名称*/
        tempParams = mapParams.get("cust_name");
        String custName = tempParams == null ? null : tempParams.toString();
        /*注册商户类别*/
        tempParams = mapParams.get("cust_type");
        String custType = tempParams == null ? null : tempParams.toString();
        /*是否是小微*/
        tempParams = mapParams.get("isXW");
        String isXW = tempParams == null ? null : tempParams.toString();
        /*注册商户法人*/
        tempParams = mapParams.get("legal_name");
        String legalName = tempParams == null ? null : tempParams.toString();
        /*注册商户法人执照*/
        tempParams = mapParams.get("bus_license");
        String busLicense = tempParams == null ? null : tempParams.toString();
        /*注册商户法人执照有效期*/
        tempParams = mapParams.get("bus_license_expire");
        String busLicenseExpire = tempParams == null ? null : tempParams.toString();
        /*注册商户详细地址*/
        tempParams = mapParams.get("company_addr");
        String companyAddr = tempParams == null ? null : tempParams.toString();
        /*注册商户简称*/
        tempParams = mapParams.get("another_name");
        String anotherName = tempParams == null ? null : tempParams.toString();
        /*注册商户法人手机号*/
        tempParams = mapParams.get("legal_tel");
        String legalTel = tempParams == null ? null : tempParams.toString();
        /*注册商户法人证件类型*/
        tempParams = mapParams.get("legal_cert_type");
        String legalCertType = tempParams == null ? null : tempParams.toString();
        /*注册商户法人证件号*/
        tempParams = mapParams.get("legal_cert_no");
        String legalCertNo = tempParams == null ? null : tempParams.toString();
        /*注册商户法人证件号有效期*/
        tempParams = mapParams.get("legal_cert_no_time");
        String legalCertNoTime = tempParams == null ? null : tempParams.toString();
        /*注册商户省*/
        tempParams = mapParams.get("province");
        String province = tempParams == null ? null : tempParams.toString();
        /*注册商户市*/
        tempParams = mapParams.get("city");
        String city = tempParams == null ? null : tempParams.toString();
        /*注册商户行业*/
        tempParams = mapParams.get("industry");
        String industry = tempParams == null ? null : tempParams.toString();
        /*注册商户结算方式*/
        tempParams = mapParams.get("settle_type");
        String settleType = tempParams == null ? null : tempParams.toString();
        /*银行帐号*/
        tempParams = mapParams.get("bank_account_no");
        String bankAccountNo = tempParams == null ? null : tempParams.toString();
        /*银行帐号用户名*/
        tempParams = mapParams.get("bank_account_name");
        String bankAccountName = tempParams == null ? null : tempParams.toString();
        /*银行帐户类型*/
        tempParams = mapParams.get("bank_account_type");
        String bankAccountType = tempParams == null ? null : tempParams.toString();
        /*银行名称*/
        tempParams = mapParams.get("bank_name");
        String bankName = tempParams == null ? null : tempParams.toString();
        /*银行类型*/
        tempParams = mapParams.get("bank_type");
        String bankType = tempParams == null ? null : tempParams.toString();
        /*开户行所在省*/
        tempParams = mapParams.get("bank_province");
        String bankProvince = tempParams == null ? null : tempParams.toString();
        /*开户行所在城市*/
        tempParams = mapParams.get("bank_city");
        String bankCity = tempParams == null ? null : tempParams.toString();
        /*支持卡类型 debit:借记卡;credit:信用卡 unit:单位结算卡*/
        tempParams = mapParams.get("bank_card_type");
        String bankCardType = tempParams == null ? null : tempParams.toString();
        /*注册商户银行卡所留证件号*/
        tempParams = mapParams.get("cert_no");
        String certNo = tempParams == null ? null : tempParams.toString();
        /*注册商户银行卡所留证件类型*/
        tempParams = mapParams.get("cert_type");
        String certType = tempParams == null ? null : tempParams.toString();
        /*注册商户银行卡所留手机号*/
        tempParams = mapParams.get("bank_telephone_no");
        String bankTelephoneNo = tempParams == null ? null : tempParams.toString();

        if (StringUtils.isBlank(merOutsideCustid) || StringUtils.isBlank(fileMap)
                || StringUtils.isBlank(custName) || StringUtils.isBlank(custType)
                || StringUtils.isBlank(isXW) || StringUtils.isBlank(legalName)
                || StringUtils.isBlank(busLicense) || StringUtils.isBlank(busLicenseExpire)
                || StringUtils.isBlank(companyAddr) || StringUtils.isBlank(anotherName)
                || StringUtils.isBlank(legalTel) || StringUtils.isBlank(legalCertType)
                || StringUtils.isBlank(legalCertNo) || StringUtils.isBlank(legalCertNoTime)
                || StringUtils.isBlank(province) || StringUtils.isBlank(city)
                || StringUtils.isBlank(industry) || StringUtils.isBlank(settleType)
                || StringUtils.isBlank(bankAccountNo) || StringUtils.isBlank(bankAccountName)
                || StringUtils.isBlank(bankAccountType) || StringUtils.isBlank(bankName)
                || StringUtils.isBlank(bankType) || StringUtils.isBlank(bankProvince)
                || StringUtils.isBlank(bankCity) || StringUtils.isBlank(bankCardType)
                || StringUtils.isBlank(certNo) || StringUtils.isBlank(certType)
                || StringUtils.isBlank(bankTelephoneNo)) {
            return ApiResult.failure(ValidateUtils.validateProperty(ysReportDTO));
        }
        return null;
    }

    /**
     * 通过map查询一条报备记录
     *
     * @param condMap
     * @return
     */
    @Override
    public String query(Map<String, Object> condMap) {
        return null;
    }
}
